-- Network Working Group                                          S. Willis
-- Request for Comments: 1269                                    J. Burruss
--                                            Wellfleet Communications Inc.
--                                                             October 1991
-- 
--                      Definitions of Managed Objects
--               for the Border Gateway Protocol (Version 3)
-- 

RFC1269-MIB DEFINITIONS ::= BEGIN

               IMPORTS
                    NetworkAddress, IpAddress, Counter
                         FROM RFC1155-SMI
                    mib-2
                         FROM RFC1213-MIB
                  OBJECT-TYPE
                         FROM RFC-1212
                    TRAP-TYPE
                         FROM RFC-1215;

               -- This MIB module uses the extended OBJECT-TYPE macro as
               -- defined in [9], and the TRAP-TYPE macro as defined
               -- in [10].

               bgp     OBJECT IDENTIFIER ::= { mib-2 15 }

               bgpVersion OBJECT-TYPE
                    SYNTAX OCTET STRING
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "Vector of supported BGP protocol version
                         numbers. Each peer negotiates the version from
                         this vector.  Versions are identified via the
                         string of bits contained within this object.
                         The first octet contains bits 0 to 7, the
                         second octet contains bits 8 to 15, and so on,


                         with the most significant bit referring to the
                         lowest bit number in the octet (e.g., the MSB
                         of the first octet refers to bit 0).  If a bit,
                         i, is present and set, then the version (i+1)
                         of the BGP is supported."
                    ::= { bgp 1 }

               bgpLocalAs OBJECT-TYPE
                    SYNTAX INTEGER (0..65535)
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The local autonomous system number."
                    ::= { bgp 2 }

               bgpPeerTable OBJECT-TYPE
                    SYNTAX SEQUENCE OF BgpPeerEntry
                    ACCESS not-accessible
                    STATUS mandatory
                    DESCRIPTION
                         "The bgp peer table."
                    ::= { bgp 3 }

               bgpIdentifier OBJECT-TYPE
                    SYNTAX IpAddress
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The BGP Identifier of local system."
                    ::= { bgp 4 }

               bgpPeerEntry OBJECT-TYPE
                    SYNTAX BgpPeerEntry
                    ACCESS not-accessible
                    STATUS mandatory
                    DESCRIPTION
                         "Information about a BGP peer connection."
                    INDEX
                         { bgpPeerRemoteAddr }
                        ::= { bgpPeerTable 1 }

               BgpPeerEntry ::= SEQUENCE {
                    bgpPeerIdentifier
                         IpAddress,
                    bgpPeerState
                         INTEGER,
                    bgpPeerAdminStatus
                         INTEGER,


                    bgpPeerNegotiatedVersion
                         INTEGER,
                    bgpPeerLocalAddr
                         IpAddress,
                    bgpPeerLocalPort
                         INTEGER,
                    bgpPeerRemoteAddr
                         IpAddress,
                    bgpPeerRemotePort
                         INTEGER,
                    bgpPeerRemoteAs
                         INTEGER,
                    bgpPeerInUpdates
                         Counter,
                    bgpPeerOutUpdates
                         Counter,
                    bgpPeerInTotalMessages
                         Counter,
                    bgpPeerOutTotalMessages
                         Counter,
                    bgpPeerLastError
                         OCTET STRING
                    }

               bgpPeerIdentifier OBJECT-TYPE
                    SYNTAX IpAddress
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The BGP Identifier of this entry's BGP peer."
                    ::= { bgpPeerEntry 1 }

               bgpPeerState OBJECT-TYPE
                    SYNTAX INTEGER {
                         idle(1),
                         connect(2),
                         active(3),
                         opensent(4),
                         openconfirm(5),
                         established(6)
                    }
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The bgp peer connection state. "
                    ::= { bgpPeerEntry 2 }


               bgpPeerAdminStatus OBJECT-TYPE
                    SYNTAX INTEGER
                    ACCESS read-write
                    STATUS mandatory
                    DESCRIPTION
                         "The desired state of the BGP connection. A
                         transition from 'stop' to 'start' will cause
                         the BGP Start Event to be generated. A
                         transition from 'start' to 'stop' will cause
                         the BGP Stop Event to be generated. This
                         parameter can be used to restart BGP peer
                         connections.  Care should be used in providing
                         write access to this object without adequate
                         authentication."
                    ::= { bgpPeerEntry 3 }

               bgpPeerNegotiatedVersion OBJECT-TYPE
                    SYNTAX INTEGER
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The negotiated version of BGP running between
                         the two peers. "
                    ::= { bgpPeerEntry 4 }

               bgpPeerLocalAddr OBJECT-TYPE
                    SYNTAX IpAddress
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The local IP address of this entry's BGP
                         connection."
                    ::= { bgpPeerEntry 5 }

               bgpPeerLocalPort OBJECT-TYPE
                    SYNTAX INTEGER (0..65535)
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The local port for the TCP connection between
                         the BGP peers."
                    ::= { bgpPeerEntry 6 }

               bgpPeerRemoteAddr OBJECT-TYPE
                    SYNTAX IpAddress
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION


                         "The remote IP address of this entry's BGP
                         peer."
                    ::= { bgpPeerEntry 7 }

               bgpPeerRemotePort OBJECT-TYPE
                    SYNTAX INTEGER (0..65535)
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The remote port for the TCP connection between
                         the BGP peers.  Note that the objects
                         bgpLocalAddr, bgpLocalPort, bgpRemoteAddr and
                         bgpRemotePort provide the appropriate reference
                         to the standard MIB TCP connection table."
                    ::= { bgpPeerEntry 8 }

               bgpPeerRemoteAs OBJECT-TYPE
                    SYNTAX INTEGER (0..65535)
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The remote autonomous system number."
                    ::= { bgpPeerEntry 9 }

               bgpPeerInUpdates OBJECT-TYPE
                    SYNTAX Counter
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The number of BGP UPDATE messages received on
                         this connection. This object should be
                         initialized to zero when the connection is
                         established."
                    ::= { bgpPeerEntry 10 }

               bgpPeerOutUpdates OBJECT-TYPE
                    SYNTAX Counter
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The number of BGP UPDATE messages received on
                         this connection. This object should be
                         initialized to zero when the connection is
                         established."
                    ::= { bgpPeerEntry 11}

               bgpPeerInTotalMessages OBJECT-TYPE
                    SYNTAX Counter


                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The total number of messages received from the
                         remote peer on this connection. This object
                         should be initialized to zero when the
                         connection is established."
                    ::= { bgpPeerEntry 12 }

               bgpPeerOutTotalMessages OBJECT-TYPE
                    SYNTAX Counter
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The total number of messages transmitted to
                         the remote peer on this connection. This object
                         should be initialized to zero when the
                         connection is established."
                    ::= { bgpPeerEntry 13 }

               bgpPeerLastError OBJECT-TYPE
                    SYNTAX OCTET STRING (SIZE (2))
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The last error code and subcode seen by this
                         peer on this connection. If no error has
                         occurred, this field is zero. Otherwise, the
                         first byte of this two byte OCTET STRING
                         contains the error code; the second contains
                         the subcode."
                    ::= { bgpPeerEntry 14 }

               bgpRcvdPathAttrTable OBJECT-TYPE
                    SYNTAX SEQUENCE OF BgpPathAttrEntry
                    ACCESS not-accessible
                    STATUS mandatory
                    DESCRIPTION
                         "The BGP Received Path Attribute Table contains
                         information about paths to destination networks
                         received by all peers."
                    ::= { bgp 5 }

               bgpPathAttrEntry OBJECT-TYPE
                    SYNTAX BgpPathAttrEntry
                    ACCESS not-accessible
                    STATUS mandatory
                    DESCRIPTION


                         "Information about a path to a network."
                    INDEX
                         { bgpPathAttrDestNetwork,
                           bgpPathAttrPeer }
                    ::= { bgpRcvdPathAttrTable 1 }

               BgpPathAttrEntry ::= SEQUENCE {
                    bgpPathAttrPeer
                         IpAddress,
                    bgpPathAttrDestNetwork
                         IpAddress,
                    bgpPathAttrOrigin
                         INTEGER,
                    bgpPathAttrASPath
                         OCTET STRING,
                    bgpPathAttrNextHop
                         IpAddress,
                    bgpPathAttrInterASMetric
                         INTEGER
                    }

               bgpPathAttrPeer OBJECT-TYPE
                    SYNTAX IpAddress
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The IP address of the peer where the path
                         information
                          was learned."
                    ::= { bgpPathAttrEntry 1 }

               bgpPathAttrDestNetwork OBJECT-TYPE
                    SYNTAX IpAddress
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The address of the destination network."
                    ::= { bgpPathAttrEntry 2 }

               bgpPathAttrOrigin OBJECT-TYPE
                    SYNTAX INTEGER {
                         igp(1),-- networks are interior
                         egp(2),-- networks learned via EGP
                         incomplete(3) -- undetermined
                    }
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION


                         "The ultimate origin of the path information."
                    ::= { bgpPathAttrEntry 3 }

               bgpPathAttrASPath OBJECT-TYPE
                    SYNTAX OCTET STRING
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The set of ASs that must be traversed to reach
                         the network. ( This object is probably best
                         represented as SEQUENCE OF INTEGER. For SMI
                         compatibility, though, it is represented as
                         OCTET STRING. Each AS is represented as a pair
                         of octets according to the following algorithm:

                              first-byte-of-pair = ASNumber / 256;
                              second-byte-of-pair = ASNumber & 255;"
                    ::= { bgpPathAttrEntry 4 }

               bgpPathAttrNextHop OBJECT-TYPE
                    SYNTAX IpAddress
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The address of the border router that should
                         be used for the destination network."
                    ::= { bgpPathAttrEntry 5 }

               bgpPathAttrInterASMetric OBJECT-TYPE
--PSIM                     SYNTAX IpAddress
                                        SYNTAX INTEGER
                    ACCESS read-only
                    STATUS mandatory
                    DESCRIPTION
                         "The optional inter-AS metric. If this
                         attribute has not been provided for this route,
                         the value for this object is 0."
                    ::= { bgpPathAttrEntry 6 }

               bgpEstablished TRAP-TYPE
                    ENTERPRISE bgp
                    VARIABLES  { bgpPeerRemoteAddr,
                              bgpPeerLastError,
                              bgpPeerState }
                    DESCRIPTION
                         "The BGP Established event is generated when
                         the BGP FSM enters the ESTABLISHED state. "
                    ::= 1


               bgpBackwardTransition TRAP-TYPE
                    ENTERPRISE bgp
                    VARIABLES  { bgpPeerRemoteAddr,
                              bgpPeerLastError,
                              bgpPeerState }
                    DESCRIPTION
                         "The BGPBackwardTransition Event is generated
                         when the BGP FSM moves from a higher numbered
                         state to a lower numbered state."
                    ::= 2
END